官方文件不建議在visual studio的環境下自行編譯tensorflow的涵式庫。基於研究需求,需要在VC++的環境下使用tensorflow深度學習醫學影像的特徵;並且能夠及時互動並更新權重值。於是爬了很多分享文。沒想到看似簡單的編譯卻是如此的困難重重。
下載tensorflow r1.6後, 新增至資料夾 c:\tf\
以系統管理員身分開啟命令提示字元
在cmake下新增build的資料夾
例如: c:\tf\tensorflow\contrib\cmake\build
cmake .. -G "Visual Studio 14 2015 Win64" -T host=x64 -DCMAKE_BUILD_TYPE=Release ^
-Dtensorflow_VERBOSE=ON ^
-Dtensorflow_ENABLE_GRPC_SUPPORT=OFF ^
-Dtensorflow_BUILD_PYTHON_BINDINGS=OFF ^
-Dtensorflow_BUILD_CC_EXAMPLE=OFF ^
-Dtensorflow_BUILD_SHARED_LIB=ON ^
-Dtensorflow_WIN_CPU_SIMD_OPTIONS=/arch:AVX2 ^
-Dtensorflow_ENABLE_GPU=ON
在Notepad++開啟 tensorflow\contrib\cmake\tools\create_def_file.py
在第48行用以下的宣告替代
EXCLUDE_RE = re.compile(r"RTTI|deleting destructor|::internal::|::`anonymous namespace'::|<lambda_[0-9a-z]+>|"
r"std::_Vector_iterator<|std::_Vector_const_iterator<|std::_Vector_alloc<|"
r"std::_Deque_iterator<|std::_Deque_alloc<|"
r"std::_Tree_iterator<|std::_Tree_const_iterator<|std::_Tree_unchecked_const_iterator<|std::_Tree_comp_alloc<|std::_Tree_node<|"
r"std::_List_iterator<|std::_List_const_iterator<|std::_List_unchecked_const_iterator<|std::_List_alloc<|"
r"std::_Iterator012<|std::_Compressed_pair<"
)
以系統管理員身分開啟 VS2015 X64 Native Tools 命令提示字元
到安裝的資料夾執行release編譯
例如: c:\tf\tensorflow\contrib\cmake\build
MSBuild /p:Configuration=Release /verbosity:detailed all_build.vcxproj
時間約 3小時
完成後可以在c:\tf\tensorflow\contrib\cmake\build\release
找到tensorflow.dll, tensorflow.lib
到安裝的資料夾執行debug編譯
例如: c:\tf\tensorflow\contrib\cmake\build
MSBuild /p:Configuration=Release /verbosity:detailed all_build.vcxproj
時間約 6小時
完成後可以在c:\tf\tensorflow\contrib\cmake\build\debug
找到tensorflow.dll, tensorflow.lib